package com.eltsistemas.controller.setor;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.eltsistemas.controller.grupo.GrupoComPermissao;
import com.eltsistemas.dao.GenericDao;
import com.eltsistemas.hibernate.HibernateUtil;
import com.eltsistemas.modelo.Responsavel;
import com.eltsistemas.modelo.Setor;
import com.eltsistemas.modelo.Usuario;

@Controller
@SessionAttributes("usuario_Logado")
public class SetorLista {
	
	@RequestMapping(value="/setor/lista", method=RequestMethod.GET)
	public String lista(Model model, String valor, 
						@ModelAttribute("usuario_Logado") Usuario user)
	{
		try
		{
			//Verifica as permissoes do grupo
			List<String> moduloList = new GrupoComPermissao().getPermissao(user.getGrupo(), "Setor");
			for(String modulo : moduloList)
			{
				if(modulo.equals("visualizar"))
				{
					//Iniciando conexao a abrindo uma transacao
					Session session = new HibernateUtil().getSession();
					session.beginTransaction();
					
					GenericDao<Setor> daoSetor = new GenericDao<>(session, Setor.class);
					GenericDao<Responsavel> daoResponsavel = new GenericDao<>(session, Responsavel.class);
					
					model.addAttribute("setores", daoSetor.listAllByAsc());
					model.addAttribute("responsaveis", daoResponsavel.listAllByAsc());
					model.addAttribute("grupo_Permissoes", moduloList);
					
					//Finalizando o objeto
					session.close();
					
					return "setor";
				}
			}
			return "redirect:/painel/index";
		}
		catch(HibernateException e)
		{
			return "redirect:/painel/erro";
		}
	}
}
